﻿using System;

class Animal
{
    public virtual void Eat()
    {
        Console.WriteLine("这是Animal的Eat方法");
    }
}

class Dog:Animal
{
    public override void Eat()
    {
        Console.WriteLine("这是Dog的Eat方法");
    }
}

class Cat:Animal
{
    public override void Eat()
    {
        Console.WriteLine("这是Cat的Eat方法");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 多态的实现前提是继承和方法重写，基类可以new所有的派生类，new哪个类，它就执行那个类的方法
        Animal animal1 = new Animal(); // 实例Animal类
        Animal animal2 = new Dog(); // 实例Dog类
        Animal animal3 = new Cat(); // 实例Cat类

        animal1.Eat(); // 调用Animal类的Eat方法
        animal2.Eat(); // 调用Dog类的Eat方法
        animal3.Eat(); // 调用Cat类的Eat方法

        Console.ReadKey();
    }
}